package chapter5.java;

/**
 * @Author juzipi
 * @Date 2021/5/16 13:24
 * @Info
 */
public class AnimalTest {

    public void showAnimal(Animal animal){
        //因为animal类可能被其他类继承重写方法，所以确定不了
        animal.eat();//晚期绑定，编译器确定不了
    }

    public void showHunt(Huntable huntable){
        //抽象类就更不用说了，并不能确定它的继承类
        huntable.hunt();//晚期绑定，编译器确定不了
    }

}


class Animal{
    public void eat(){
        System.out.println("进食");
    }
}

interface Huntable{
    void hunt();
}

class Dog extends Animal implements Huntable{

    @Override
    public void eat() {
        System.out.println("吃东西");
    }

    @Override
    public void hunt() {
        System.out.println("捉耗子");
    }
}

class Cat extends Animal implements Huntable{

    public Cat(){
        super();
    }

    public Cat(String name){
        this();//早期绑定
    }


    @Override
    public void eat() {
        System.out.println("狗吃骨头");
    }

    @Override
    public void hunt() {
        System.out.println("狗拆家");
    }
}

